package com.liang.blog.system.mapper;

import com.liang.blog.model.BlogMenu;
import com.liang.blog.vo.menu.BlogMenuVo;
import com.liang.blog.vo.menu.MenuPermissionVo;
import com.liang.blog.vo.menu.RouterVo;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

/**
 * @Author：YanWenLiang
 * @Date:2023-08-17-16:52
 */
@Mapper
public interface  BlogMenuMapper {


    /**
     * 根据父 id 获取信息
     * @param uid
     * @return
     */
    List<BlogMenu> getBlogMenuByParentId(Long uid);

    /**
     * 根据父 id 获取信息(作用于删除菜单)
     * @param uid
     * @return
     */
    List<BlogMenu> getBlogMenuByParentIdToDelete(Long uid);

    /**
     * 获取全部类型为目录和菜单的菜单
     * @return
     */
    public List<BlogMenu> getMenuAll();

    /**
     * 通过角色菜单中间表，获取菜单信息
     * @param roleId
     * @return
     */
    List<MenuPermissionVo> getMenuByRoleIdAndMenuId(int roleId);

    /**
     * 通过父id获取
     * @param parentId
     * @return
     */
    List<BlogMenuVo> getBlogMenuAllByParentId(Long parentId);

    /**
     * 获取子节点
     * @param ids
     * @return
     */
    List<Long> hasChildrenData(List<Long> ids);

    /**
     * 保存菜单
     * @param blogMenu
     * @return
     */
    int insertMenu(BlogMenu blogMenu);

    /**
     * 获取全部菜单信息，（id, parent_id, menu_name）
     * @return
     */
    List<BlogMenu> getBlogMenuAll();

    /**
     * 获取全部菜单信息
     * @return
     */
    List<BlogMenu> getBlogMenuList(BlogMenu blogMenu);

    /**
     * 修改菜单信息
     * @param menu
     * @return
     */
    int updateMenu(BlogMenu menu);

    /**
     * 逻辑删除菜单
     * @param id
     * @return
     */
    int deleteMenuById(Long id);

    /**
     * 获取全部菜单 id
     * @return
     */
    List<Long> getMenuIdAll();

}
